# 元祖定义出来了之后，里面的元素不可修改。（元组的不可变指的是元组所指向的内存中的内容不可变，但可以重新赋值。）

# 元祖的创建
tuple1 = tuple()
print("定义一个空的元祖", tuple1)
tuple1 = ()
print("定义一个空的元祖", tuple1)
tuple1 = (1,)
print("定义只有一个元素的元祖, 必须加上一个,", tuple1)
tuple1 = (1, 2, 3)
print("定义多个元素的元祖", tuple1)

tuple1 = tuple("hello")
print("字符串转换成tuple", tuple1)
tuple1 = tuple([1, 2, 3, 4, 5])
print("列表转换成tuple", tuple1)

# 访问元组
tuple1 = tuple("a", "b", "c")
print(f"根据元素下标访问元组 tuple1[2] = {tuple1[2]}")

# 元祖的遍历
for item in tuple1:
    print(item)
for index, item in enumerate(tuple1):
    print("索引", index, "元素", item)


# 元组的不可变指的是元组所指向的内存中的内容不可变，但可以重新赋值。
tuple1 = (1, )
print("内存中的地址 ",id(tuple1), "具体值 ", tuple1)
tuple1 = tuple1 + (2, ) # 正常，重新赋值
print("内存中的地址 ",id(tuple1), "具体值 ", tuple1)
print("获取元组中的值", tuple1[1])
# tuple1[1] = 3  # 报错，不可修改内容。